using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; namespace SuperPolarity { class Bullet : Actor { protected ParticleEngine particleEngine; public int Power; public Bullet(SuperPolarity newGame) : base(newGame) { } ~Bullet() { particleEngine = null; } public override void Initialize(Texture2D texture, Vector2 position) { base.Initialize(texture, position); BoxDimensions.X = 10; BoxDimensions.Y = 10; BoxDimensions.W = 10; BoxDimensions.Z = 10; MaxVelocity = 8; InitBox(); particleEngine = ParticleEffectFactory.CreateBullet(position); } public override void Update(GameTime gameTime) { Velocity.X = (float)(MaxVelocity * Math.Cos(Angle)); Velocity.Y = (float)(MaxVelocity * Math.Sin(Angle)); Power = 1; Position += Velocity; UpdateBox(); particleEngine.Update(); particleEngine.EmitterLocation = Position; } public override void Draw(SpriteBatch spriteBatch) { base.Draw(spriteBatch); particleEngine.Draw(spriteBatch); } public override void Collide(Actor other, Rectangle collision) { if (Dying) { return; } if (other.GetType().IsAssignableFrom(typeof(StandardShip))) { Die(); return; } } protected override void Die() { ActorManager.CheckOut(this); Renderer.CheckOut(this); Parent.Children.Remove(this); } public override void CleanUp() { base.CleanUp(); this.particleEngine = null; } } }